home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MACD 5
/
MACD 5.bin
/
workbench
/
blankery
/
bserverdir
/
sources
/
server
/
window.c
< prev
Wrap
C/C++ Source or Header
|
1994-12-02
|
5KB
|
218 lines
#include <exec/types.h>
#include <exec/memory.h>
#include <intuition/intuition.h>
#include <clib/exec_protos.h>
#include <clib/commodities_protos.h>
#include <clib/intuition_protos.h>
#include <clib/graphics_protos.h>
#include <clib/gadtools_protos.h>
#include <clib/dos_protos.h>
#include <clib/alib_protos.h>
#include <stdio.h>
#include "/include/server.h"
#define MUST_RETRY 0
#define MUST_BLANK 1
extern struct List ClientsList;
extern UWORD fonth, wleft, wtop, DefaultClient, delaySecs, delayEvents;
extern BOOL Blanking, RandomClient, CommodityActive, StayCool, BlankStatus;
extern struct Gadget *glist, *random_gdg, *active_gdg, *modeid_gdg, *list_gdg;
extern CxObj *broker;
extern struct Screen *WBS;
extern struct VisualInfo *vi;
extern struct TextAttr topazFont;
extern BOOL SetUpGadgets(void);
extern void RemoveGadgets(void);
extern void AskFiles( void );
extern void ClearPendingMessages( struct MsgPort * );
extern void StartBlanking( void );
extern void RemoveClient( UWORD, char * );
extern void SendCommandToClient( ULONG );
extern void GetDisplayIDFromNode( UWORD );
extern struct ModeNode *DisplayNode;
extern ULONG DisplayID;
/***************
* *
* WINDOW STUFF *
* *
***************/
struct Window *window;
char wname[100];
ULONG windowSignal = NULL;
void DetachGadgets( void )
{
GT_SetGadgetAttrs( list_gdg, window, NULL, GTLV_Labels, ~0, TAG_END );
}
void AttachGadgets( void )
{
GT_SetGadgetAttrs( list_gdg, window, NULL, GTLV_Labels, &ClientsList, GTLV_Selected, DefaultClient, TAG_END );
}
BOOL PopUpWindow( void )
{
if ( window )
{
ActivateWindow( window );
WindowToFront( window );
return( TRUE );
}
if ( SetUpGadgets() )
{
if ( window = OpenWindowTags( NULL,
WA_Width, 300,
WA_Height, 138 + fonth,
WA_Left, wleft,
WA_Top, wtop,
WA_Gadgets, glist,
WA_Title, wname,
WA_ScreenTitle, PROGRAMNAME" "PROGRAMVERSION" © 1994 by Stefano Reksten of 3AM",
WA_IDCMP, IDCMP_RAWKEY | IDCMP_GADGETUP | IDCMP_CLOSEWINDOW | INTEGERIDCMP | LISTVIEWIDCMP | BUTTONIDCMP | CHECKBOXIDCMP,
WA_Flags, WFLG_DEPTHGADGET | WFLG_DRAGBAR | WFLG_CLOSEGADGET | WFLG_ACTIVATE,
TAG_END ) )
{
GT_RefreshWindow( window, NULL );
AttachGadgets();
windowSignal = 1L << window->UserPort->mp_SigBit;
return( TRUE );
}
RemoveGadgets();
}
DisplayBeep( NULL );
return( FALSE );
}
void ShutWindow( void )
{
if ( window )
{
ClearPendingMessages( window->UserPort );
wleft = window->LeftEdge;
wtop = window->TopEdge;
CloseWindow( window );
window = NULL;
windowSignal = NULL;
RemoveGadgets();
}
}
void HandleWindowMessages( void )
{
struct IntuiMessage *imsg;
ULONG class;
UWORD code;
ULONG addr;
while( window && ( imsg = GT_GetIMsg( window->UserPort ) ) )
{
class = imsg->Class;
code = imsg->Code;
addr = (ULONG)imsg->IAddress;
GT_ReplyIMsg( imsg );
switch( class )
{
case IDCMP_RAWKEY:
switch( code )
{
case 0x13:
RandomClient ^= TRUE;
GT_SetGadgetAttrs( random_gdg, window, NULL, GTCB_Checked, RandomClient, TAG_END );
break;
case 0x20:
CommodityActive ^= TRUE;
GT_SetGadgetAttrs( active_gdg, window, NULL, GTCB_Checked, CommodityActive, TAG_END );
break;
case 0x25:
ShutWindow();
break;
case 0x10:
StayCool = FALSE;
break;
case 0x35:
if ( CommodityActive && !Blanking && BlankStatus != MUST_BLANK )
{
Delay( 10 );
BlankStatus = MUST_BLANK;
StartBlanking();
}
break;
case 0x33:
AskFiles();
break;
case 0x27:
RemoveClient( DefaultClient, NULL );
break;
}
break;
case IDCMP_REFRESHWINDOW:
GT_BeginRefresh( window );
GT_EndRefresh( window, TRUE );
break;
case IDCMP_CLOSEWINDOW:
ShutWindow();
break;
case IDCMP_GADGETUP:
switch( ((struct Gadget *)addr)->GadgetID )
{
case TIMEOUT_GDG:
delaySecs = ((struct StringInfo *)((struct Gadget *)addr)->SpecialInfo)->LongInt;
delayEvents = delaySecs * 10;
break;
case RANDOM_GDG:
RandomClient ^= TRUE;
break;
case ACTIVE_GDG:
CommodityActive ^= TRUE;
break;
case HIDE_GDG:
ShutWindow();
break;
case QUIT_GDG:
StayCool = FALSE;
break;
case BLANK_GDG:
if ( CommodityActive && !Blanking && BlankStatus != MUST_BLANK )
{
Delay( 10 );
BlankStatus = MUST_BLANK;
StartBlanking();
}
break;
case MODEID_GDG:
GetDisplayIDFromNode( code );
break;
case SHOWINTERFACE_GDG:
AskFiles();
break;
case KILL_GDG:
RemoveClient( DefaultClient, NULL );
break;
case LIST_GDG:
DefaultClient = code;
break;
}
break;
}
}
}